package cn.occgmat.controller;

import cn.occgmat.entity.RbsystemPassenger;
import cn.occgmat.entity.RbsystemUser;
import cn.occgmat.service.RbsystemUserService;
import cn.occgmat.util.BaseResponse;
import cn.occgmat.util.StatusCode;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * (RbsystemUser)表控制层
 *
 * @author shimmer
 * @since 2021-03-27 16:09:11
 */
@RestController
@RequestMapping("rbsystemUser")
public class RbsystemUserController {
    /**
     * 服务对象
     */
    @Resource
    private RbsystemUserService rbsystemUserService;

    // ===================================== 管理端接口 =======================================

    /**
     * 分页查询用户信息
     *
     * @param page  当前页数
     * @param limit 每页数
     * @return json数据
     */
    @GetMapping(value = "selectPage")
    public BaseResponse<RbsystemUser> selectPage(int page, int limit) {
        List<RbsystemUser> userList = this.rbsystemUserService.queryAllByLimit(page, limit);
        BaseResponse<RbsystemUser> baseResponse;
        if (userList != null) {
            baseResponse = new BaseResponse<>(StatusCode.Success);
            baseResponse.setData(userList);
            baseResponse.setCount(this.rbsystemUserService.getCount());
        } else {
            baseResponse = new BaseResponse<>(StatusCode.NotFound);
        }
        return baseResponse;
    }

    /**
     * 更新单个用户信息
     */
    @PostMapping(value = "update")
    public BaseResponse<?> update(@RequestBody RbsystemUser user) {
        int result = rbsystemUserService.update(user);
        return result > 0 ? new BaseResponse<>(StatusCode.Success) : new BaseResponse<>(StatusCode.Fail);
    }

    /**
     * 添加用户信息
     */
    @PostMapping(value = "add")
    public BaseResponse<?> add(@RequestBody RbsystemUser user) {
        RbsystemUser addedTimetable = rbsystemUserService.insert(user);
        return addedTimetable != null ? new BaseResponse<>(StatusCode.Success) : new BaseResponse<>(StatusCode.Fail);
    }

    /**
     * 删除用户信息
     */
    @GetMapping(value = "delete")
    public BaseResponse<?> delete(Integer id) {
        boolean result = rbsystemUserService.deleteById(id);
        return result ? new BaseResponse<>(StatusCode.Success) : new BaseResponse<>(StatusCode.Fail);
    }

    // ===================================== 客户端接口 =======================================

    /**
     * 用户登录功能
     *
     * @param user 用户实体
     * @return 查询结果json数据
     */
    @PostMapping("login")
    public BaseResponse<RbsystemUser> login(@RequestBody RbsystemUser user) {
        return this.rbsystemUserService.login(user);
    }

    /**
     * 用户注册功能
     *
     * @param user 用户实体
     * @return 查询结果json数据
     */
    @PostMapping("register")
    public BaseResponse<?> register(@RequestBody RbsystemUser user) {
        return this.add(user);
    }

    /**
     * 用户信息维护
     * 功能: 用户可以修改当前账号的基本信息。
     *
     * @param user 用户实体
     * @return 查询结果json数据
     */
    @PostMapping("maintain")
    public BaseResponse<?> maintain(@RequestBody RbsystemUser user) {
        return this.update(user);
    }

}
